package fr.upmc.cie.connexion;

import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

import org.xml.sax.SAXException;

import android.content.Context;

import fr.upmc.cie.data.ChannelItem;
import fr.upmc.cie.data.DataManager;
import fr.upmc.cie.data.TicketItem;
import fr.upmc.cie.xml.AndroidSaxFeedParser;

public class Updater {
	
	/**
	 * Mettre a jours tous les channels
	 * @param context
	 */
	public static void refresh(Context context){
		ArrayList<ChannelItem> channels = DataManager.getChannelManager(context).getAllChannels();
		DataManager.getTicketManager(context).clear();
		for(ChannelItem ci : channels){
			try {
				AndroidSaxFeedParser asfp = new AndroidSaxFeedParser(ci.getUrl());
				DataManager.getTicketManager(context).addNewTickets(ci, asfp.parseItem());
			} catch (MalformedURLException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} catch (SAXException e) {
				e.printStackTrace();
			}
		}
	}

	/**
	 * Obtenir un nombre de tickets les plus recents
	 * @param entry
	 * @param recent
	 * @param context
	 */
	public static void getRecentUpdate(int entry,ArrayList<TicketItem> recent, Context context){
		recent.clear();
		ArrayList<TicketItem> temp = new ArrayList<TicketItem>();
		HashMap<Long, ArrayList<TicketItem>> tickets = DataManager.getTicketManager(context).getTickets();
		for (Long id : tickets.keySet()){
			temp.addAll(tickets.get(id));
		}
		Collections.sort(temp);
		if(temp.size()>entry){
			for (int i=1; i<=entry; i++){
				recent.add(temp.get(temp.size()-i));
			}
		}else{
			recent.addAll(temp);
		}
	}
}
